//闭包版本
let obj = {}
defineReactive(obj,"a",'1')
function defineReactive(obj,key,val) {
    Object.defineProperty(obj,key,{
        get () {
            console.log("调用get方法，val",val) 
            return val //直接返回 参数val 形成闭包
        },
        set (newVal) {
            console.log("调用set方法，newVal",newVal)
       
            val = newVal
            return 
        }
    })
}

obj.a
obj.a = 2
obj.a

// 调用get方法，val 1
// 调用set方法，newVal 2
// 调用get方法，val 2 